package fr.umlv.m2.uwp2011.persistence.sujet.dao;

import java.util.ArrayList;
import java.util.List;

import fr.umlv.m2.uwp2011.persistence.matiere.Matiere;
import fr.umlv.m2.uwp2011.persistence.matiere.dao.HibernateMatiereDAO;
import fr.umlv.m2.uwp2011.persistence.sujet.Exam;
import fr.umlv.m2.uwp2011.persistence.sujet.IProjetDAO;
import fr.umlv.m2.uwp2011.persistence.sujet.Sujet;

public class HibernateProjetDAO extends HibernateSujetDAO implements IProjetDAO {
	private static final HibernateMatiereDAO matiereDAO = new HibernateMatiereDAO();

	static {
		Sujet sujet;
		Long id;
		String type = Sujet.PROJET;
		
		//--------- matiere prog reseau, id 1 -----------//
		Matiere matiere = matiereDAO.findById(1L);
		
		id = 16L;
		sujet = new Exam();
		sujet.setId(id);
		sujet.setType(type);
		sujet.setMatiere(matiere);
		sujet.setTitre("Projet : programmation reseau");
		sujet.setDescription("description du projet : initiation a la programmation reseau");
		allSujet.put(id, sujet);

		//--------- matiere prog C, id 2 -----------//
		matiere = matiereDAO.findById(2L);
		
		id = 17L;
		sujet = new Exam();
		sujet.setId(id);
		sujet.setType(type);
		sujet.setMatiere(matiere);
		sujet.setTitre("Projet : programmation C");
		sujet.setDescription("description du projet : la programmation c");
		allSujet.put(id, sujet);
		
		//--------- matiere reseaux sans fil, id 3 -----------//
		matiere = matiereDAO.findById(3L);
		
		id = 18L;
		sujet = new Exam();
		sujet.setId(id);
		sujet.setType(type);
		sujet.setMatiere(matiere);
		sujet.setTitre("Projet : reseaux sans fil");
		sujet.setDescription("description du projet : les reseaux sans fil");
		allSujet.put(id, sujet);
	}

	
	@Override
	public List<Sujet> findAll() {
		List<Sujet> list = new ArrayList<Sujet>();
		for(Sujet sujet : allSujet.values()) {
			if(Sujet.PROJET.equals(sujet.getType()) ) {
					list.add(sujet);
			}
		}
		return list;
	}

	@Override
	public List<Sujet> findByMatiere(Long matiere_id) {
		List<Sujet> list = new ArrayList<Sujet>();
		for(Sujet sujet : allSujet.values()) {
			if(Sujet.PROJET.equals(sujet.getType()) && sujet.getMatiere().getId() == matiere_id) {
				list.add(sujet);
			}
		}
		return list;
	}
}
